/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.text;

import java.util.HashMap;
import java.util.Map;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.SVG;

/**
 *
 * @author nt
 */
public interface _FontProperties {

    final Map<String, String> INTERFACE_ATTRIBUTES = new HashMap<String, String>(0x8) {

        {
            put(SVG.FONT_PROP, SVG.FONT_PROP);
            put(SVG.FONT_FAMILY_PROP, SVG.FONT_FAMILY_ATTR);
            put(SVG.FONT_SIZE_PROP, SVG.FONT_SIZE_ATTR);
            put(SVG.FONT_SIZE_ADJUST_PROP, SVG.FONT_SIZE_ADJUST_ATTR);
            put(SVG.FONT_STRETCH_PROP, SVG.FONT_STRETCH_ATTR);
            put(SVG.FONT_STYLE_PROP, SVG.FONT_STYLE_ATTR);
            put(SVG.FONT_VARIANT_PROP, SVG.FONT_VARIANT_ATTR);
            put(SVG.FONT_WEIGHT_PROP, SVG.FONT_WEIGHT_ATTR);
        }
    };

    /**
     * Value: [ [ &lt;'font-style'&gt; || &lt;'font-variant'&gt; || &lt;'font-weight'&gt; ]?
     * &lt;'font-size'&gt; [ / &lt;'line-height'&gt; ]? &lt;'font-family'&gt; ] | caption | icon |
     * menu | message-box | small-caption | status-bar | inherit
     *<br/>
     * Shorthand property for setting ‘font-style’, ‘font-variant’,
     * ‘font-weight’, ‘font-size’, ‘line-height’ and ‘font-family’. The
     * ‘line-height’ property has no effect on text layout in SVG. For the
     * purposes of the ‘font’ property, ‘line-height’ is assumed to be equal to
     * the value of the ‘font-size’ property. Conforming SVG Viewers are not
     * required to support the various system font options (caption, icon, menu,
     * message-box, small-caption and status-bar) and can use a system font or
     * one of the generic fonts instead.
     *<br/>
     * Animatable: yes (non-additive)
     */
    @JSFProperty
    String getFont();

    /**
     * Value: [[ &lt;family-name&gt; | &lt;generic-family&gt; ],]* [&lt;family-name&gt; |
     * &lt;generic-family&gt;] | inherit
     *<br/>
     * This property indicates which font family is to be used to render the
     * text, specified as a prioritized list of font family names and/or generic
     * family names. Unless the family name corresponds to a CSS IDENT, it must
     * be quoted. Except for any additional information provided in this
     * specification, the normative definition of the property is in CSS2
     * ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section 15.2.2).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontFamily();

    /**
     * Value: &lt;absolute-size&gt; | &lt;relative-size&gt; | &lt;length&gt; | &lt;percentage&gt; |
     * inherit
     *<br/>
     * This property refers to the size of the font from baseline to baseline
     * when multiple lines of text are set solid in a multiline layout
     * environment. For SVG, if a &lt;length&gt; is provided without a unit identifier
     * (e.g., an unqualified number such as 128), the SVG user agent processes
     * the &lt;length&gt; as a height value in the current user coordinate system.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontSize();

    /**
     * Value: &lt;number&gt; | none | inherit
     *<br/>
     * This property allows authors to specify an aspect value for an element
     * that will preserve the x-height of the first choice font in a substitute
     * font. Except for any additional information provided in this
     * specification, the normative definition of the property is in CSS2
     * ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section 15.2.4).
     *<br/>
     * Animatable: yes (non-additive)
     */
    @JSFProperty
    Integer getFontSizeAdjust();

    /**
     * Value: normal | wider | narrower | ultra-condensed | extra-condensed |
     * condensed | semi-condensed | semi-expanded | expanded | extra-expanded |
     * ultra-expanded | inherit
     *<br/>
     * This property indicates the desired amount of condensing or expansion in
     * the glyphs used to render the text. Except for any additional information
     * provided in this specification, the normative definition of the property
     * is in CSS2 ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section
     * 15.2.3).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontStretch();

    /**
     * Value: normal | italic | oblique | inherit
     *<br/>
     * This property specifies whether the text is to be rendered using a
     * normal, italic or oblique face. Except for any additional information
     * provided in this specification, the normative definition of the property
     * is in CSS2 ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section
     * 15.2.3).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontStyle();

    /**
     * Value: normal | small-caps | inherit
     *<br/>
     * This property indicates whether the text is to be rendered using the
     * normal glyphs for lowercase characters or using small-caps glyphs for
     * lowercase characters. Except for any additional information provided in
     * this specification, the normative definition of the property is in CSS2
     * ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section 15.2.3).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontVariant();

    /**
     * Value: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 |
     * 600 | 700 | 800 | 900 | inherit
     *<br/>
     * This property refers to the boldness or lightness of the glyphs used to
     * render the text, relative to other fonts in the same font family. Except
     * for any additional information provided in this specification, the
     * normative definition of the property is in CSS2
     * ([<a href="http://www.w3.org/TR/CSS2/">CSS2</a>], section 15.2.3).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getFontWeight();
}
